import React from 'react'
import { Table } from 'antd'
import type { TableProps } from 'antd'

interface ProTableProps<T> extends TableProps<T> {
  loading?: boolean
  showTotal?: boolean
}

/**
 * 增强型表格组件
 * @description 基于 Ant Design Table 的封装，提供了更便捷的使用方式
 * 
 * @example
 * ```tsx
 * <ProTable<User>
 *   columns={columns}
 *   dataSource={data}
 *   loading={loading}
 *   showTotal
 *   pagination={{
 *     current: page,
 *     pageSize: 10,
 *     total: total,
 *     onChange: setPage
 *   }}
 * />
 * ```
 * 
 * @param loading - 加载状态
 * @param showTotal - 是否显示数据总数
 * @param columns - 表格列配置
 * @param dataSource - 数据源
 */

function ProTable<T extends object>({ 
  loading,
  showTotal = true,
  pagination,
  ...props 
}: ProTableProps<T>) {
  return (
    <Table<T>
      {...props}
      loading={loading}
      pagination={
        pagination === false
          ? false
          : {
              showTotal: showTotal ? (total) => `共 ${total} 条记录` : undefined,
              pageSize: 10,
              ...pagination,
            }
      }
    />
  )
}

export default ProTable 